const { Sequelize, Model, DataTypes } = require('sequelize');
var dayjs = require('dayjs')

// 方法 3: 分别传递参数 (其它数据库)
const sequelize = new Sequelize('big-screen', 'big-screen', '123456', {
  host: '10.11.3.90',
  port: 3306,
  dialect: 'mysql', /* 选择 'mysql' | 'mariadb' | 'postgres' | 'mssql' 其一 */
  // timezone: '-08:00', // 东八时区
  // timezone: 'Asia/Shanghai', // 东八时区
  // timezone: 'system', // 东八时区
});

class Godzilla extends Model {}

Godzilla.init(
  {
    // 在这里定义模型属性
    name: {
      type: DataTypes.STRING,
      allowNull: false
    },
    age: {
      type: DataTypes.INTEGER
      // allowNull 默认为 true
    }
  },
  {
    // 这是其他模型参数
    sequelize, // 我们需要传递连接实例
    modelName: 'test1', // 我们需要选择模型名称
    // timestamps: false, // 不要时间戳
    freezeTableName: true // 禁止表名自动变复数
  }
)


;(async function() {
  try {
    await sequelize.authenticate();
    console.log('Connection has been established successfully.');
    await Godzilla.sync() //- 如果表不存在,则创建该表(如果已经存在,则不执行任何操作)
    // await Godzilla.create({ name: '金刚', age: 100 })
    await sequelize.query('SELECT `name`, `createdAt` FROM `test1`').then(function (data) {
      console.log('data', data)
      // console.log('data', data.map(it => dayjs(it.createdAt).format('YYYY-MM-DD HH:mm:ss')))
    })
    
    // await sequelize.query("set time_zone = 'Asia/Shanghai'").then(function (data) {
    // // await sequelize.query("set time_zone = 'Asia/Beijing'").then(function (data) {
    // //   console.log('data', 1)
    // })
    // await sequelize.query('SELECT `createdAt` FROM `dicts` where id=206').then(function (data) {
    //   console.log('data', data)
    //   // console.log('data', data.map(it => dayjs(it.createdAt).format('YYYY-MM-DD HH:mm:ss')))
    // })
    // 关闭连接
    await sequelize.close()
  } catch (error) {
    console.error('Unable to connect to the database:', error);
    await sequelize.close()
  }
})()